﻿Imports System.Resources
Imports System.Threading
Imports Biz
Imports BLL


Public Class ctrlListaMediosBusqueda

    Private _llamador As frmMainMetro
    Private _ctrlNuevoMedioBusqueda As ctrlNuevoMedios_Busqueda
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnNuevo.Text = _RM.GetString("btnNuevo")
        btnEditar.Text = _RM.GetString("btnEditar")
        btnEliminar.Text = _RM.GetString("btnEliminar")

        SetAyudaContextual()

    End Sub

    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property


    Public Sub CargarGrilla()
        Dim oMedioBusqueda As cMedios_Busqueda
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeMediosBusqueda.BeginUpdate()

        advTreeMediosBusqueda.Nodes.Clear()

        Try
            colObjetos = GestorMedios_Busqueda.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oMedioBusqueda In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oMedioBusqueda.MedB_Codigo
                    oNode.Text = oMedioBusqueda.MedB_Codigo
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oMedioBusqueda.MedB_Descrip))
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oMedioBusqueda.Tipo_Medio_Busqueda.TMedB_Descrip))

                    advTreeMediosBusqueda.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.Medios_BusquedaFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeMediosBusqueda.EndUpdate()

        advTreeMediosBusqueda.Refresh()

    End Sub

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
        Dim oAux As cMedios_Busqueda = New cMedios_Busqueda

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionMediosBusqueda)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeMediosBusqueda.SelectedNode Is Nothing Then
                If MessageBox.Show("Confirma la eliminación del registro?", "Confirmar acción", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
                    oAux.MedB_Codigo = Utils.Convert.ToInt16(advTreeMediosBusqueda.SelectedNode.Tag)

                    Try
                        GestorMedios_Busqueda.Instance.Eliminar(oAux)
                        GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.MediosDeBusquedaBaja))

                        _llamador.RefrescarGrillas()

                    Catch ex As Excepciones.Medios_BusquedaFalloBaja
                        Main.ManejarExcepcion(ex)
                    Catch ex As Exception
                        Main.ManejarExcepcion(ex)
                    End Try
                End If
            End If


        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionMediosBusqueda)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            _llamador._ctrlNuevoMedios_Busqueda.CargarComboTipoMedio()
            _llamador._ctrlNuevoMedios_Busqueda.MostrarParaAlta()
            _llamador.ShowModalPanel(_llamador._ctrlNuevoMedios_Busqueda, DevComponents.DotNetBar.Controls.eSlideSide.Left)

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click
        Dim oAux As cMedios_Busqueda

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionMediosBusqueda)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeMediosBusqueda.SelectedNode Is Nothing Then
                Try
                    oAux = New cMedios_Busqueda
                    oAux.MedB_Codigo = advTreeMediosBusqueda.SelectedNode.Tag
                    oAux = GestorMedios_Busqueda.Instance.Buscar(oAux)

                    _llamador._ctrlNuevoMedios_Busqueda.CargarComboTipoMedio()
                    _llamador._ctrlNuevoMedios_Busqueda.MostrarParaEdicion(oAux)
                    _llamador.ShowModalPanel(_llamador._ctrlNuevoMedios_Busqueda, DevComponents.DotNetBar.Controls.eSlideSide.Left)

                Catch ex As Excepciones.Medios_BusquedaFalloBuscar
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try
            End If

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Public Sub SetAyudaContextual()
        _RM = New ResourceManager("UI.AyudaContextual", System.Reflection.Assembly.GetExecutingAssembly)

        HelpProviderForm.SetHelpString(advTreeMediosBusqueda, "Lista de medios utilizados para publicación de búsquedas")

    End Sub

    Public Sub Inicializar()

        CargarGrilla()
        SetAyudaContextual()

    End Sub

End Class
